package com.css.dzj.zfjg.modules.clue.service;

import com.css.dzj.zfjg.modules.clue.entity.Clue;
import com.querydsl.core.QueryResults;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * 信用线索企业详情
 */
public interface ClueService {

    /**
     * 添加信用线索企业详情
     * @param clue
     */
    void add(Clue clue, HttpServletRequest request);

    /**
     * 修改信用线索企业详情
     * @param clue
     */
    void update(Clue clue);

    /**
     * 通过id查找信用线索企业详情
     * @param id
     * @return
     */
    Clue findById(String id);

    /**
     * 分页查询所有信用线索企业详情
     * @return
     */
    QueryResults<Clue> queryAll(Pageable pageable);

    /**
     * 多条件分页查询信用线索企业详情
     * @param pageable
     * @param enterpriseName
     * @param enterpriseIdNumber
     * @param creditClueReasons
     * @param status
     * @return
     */
    QueryResults<Clue> listClue(Pageable pageable, String enterpriseName, String enterpriseIdNumber, String creditClueReasons, String status);

    /**
     * 通过企业证件号码查询企业信用线索
     * @param enterpriseIdNumber
     * @return
     */
    Clue queryByIdNumber(String enterpriseIdNumber);

    /**
     * 删除企业信用线索sss
     * @param clue
     */
    void delete(Clue clue);

    /**
     * 企业信用线索批量导入
     * @author liyuan
     * @param file
     */
    void addClueFromExcel(MultipartFile file, HttpServletRequest request) throws IOException;

    /**
     * 查询全部
     * @return
     */
    public List<Map> getAll();

    /**
     * 根据企业证件号码查询
     * @param enterpriseIdNumber
     * @return
     */
    Clue queryByenterpriseIdNumber(String enterpriseIdNumber);

    /**
     * 判断数据库中是否有企业证件号码相同的数据
     * @param enterpriseIdNumber
     * @return
     */
    boolean isRepeatByEnterpriseIdNumber(String enterpriseIdNumber);

    // 信用线索批量反馈至应急部
    void importToRemote(MultipartFile file, HttpServletRequest request) throws Exception;
}
